package com.iims.market.service;


import com.iims.market.domain.ContractType;
import com.iims.market.domain.entity.CtraTreeSelect;

import java.util.List;

/**
 * @author fanpei
 * @date 2021/6/11 14:52
 */
public interface IContractTypeService {
    /**
     * 获取合同类型列表
     *
     * @return
     */
    List<ContractType> selectContractTypeList(ContractType ctaType);

    /**
     * 获取合同类型详情
     *
     * @param ctraTypeId
     * @return
     */
    ContractType selectOne(Long ctraTypeId);

    /**
     * 校验合同类型名称是否唯一
     *
     * @param ctaType 合同类型信息
     * @return 结果
     */
    String checkContractTypeNameUnique(ContractType ctaType);

    /**
     * 新增保存合同类型信息
     *
     * @param ctaType 合同类型信息
     * @return 结果
     */
    int insertContractType(ContractType ctaType);

    /**
     * 修改合同类型信息
     *
     * @param ctaType 合同类型信息
     * @return 结果
     */
    int updateContractType(ContractType ctaType);

    /**
     * 删除合同类型管理信息
     *
     * @param ctraTypeId 合同类型Id
     * @return 结果
     */
    int deleteContractTypeById(Long ctraTypeId);

    /**
     * 检查是否具有儿子节点
     *
     * @param ctraTypeId
     * @return
     */
    int selectChildrenCount(Long ctraTypeId);

    /**
     * 建立树形列表
     *
     * @param types
     * @return
     */
    List<ContractType> buildCtraTypeTreeList(List<ContractType> types);

    /**
     * 建立树形结构(用于选择)
     *
     * @param types
     * @return
     */
    List<CtraTreeSelect> buildCtraTypeTreeSelect(List<ContractType> types);
}
